39#ifdef PREINIT_SUPPORTED
43#ifdef MikroCCoreVersion
44 #if MikroCCoreVersion >= 1
49#include "drv_digital_out.h"
50#include "drv_digital_in.h"
51#include "drv_i2c_master.h"
73#define AMBIENT25_REG_MOD_CHANNEL_CTRL 0x40
74#define AMBIENT25_REG_ENABLE 0x80
75#define AMBIENT25_REG_MEAS_MODE0 0x81
76#define AMBIENT25_REG_MEAS_MODE1 0x82
77#define AMBIENT25_REG_SAMPLE_TIME0 0x83
78#define AMBIENT25_REG_SAMPLE_TIME1 0x84
79#define AMBIENT25_REG_ALS_NR_SAMPLES0 0x85
80#define AMBIENT25_REG_ALS_NR_SAMPLES1 0x86
81#define AMBIENT25_REG_FD_NR_SAMPLES0 0x87
82#define AMBIENT25_REG_FD_NR_SAMPLES1 0x88
83#define AMBIENT25_REG_WTIME 0x89
84#define AMBIENT25_REG_AILT0 0x8A
85#define AMBIENT25_REG_AILT1 0x8B
86#define AMBIENT25_REG_AILT2 0x8C
87#define AMBIENT25_REG_AIHT0 0x8D
88#define AMBIENT25_REG_AIHT1 0x8E
89#define AMBIENT25_REG_AIHT2 0x8F
90#define AMBIENT25_REG_AUX_ID 0x90
91#define AMBIENT25_REG_REV_ID 0x91
92#define AMBIENT25_REG_ID 0x92
93#define AMBIENT25_REG_STATUS 0x93
94#define AMBIENT25_REG_ALS_STATUS 0x94
95#define AMBIENT25_REG_ALS_DATA0_LSB 0x95
96#define AMBIENT25_REG_ALS_DATA0_MSB 0x96
97#define AMBIENT25_REG_ALS_DATA1_LSB 0x97
98#define AMBIENT25_REG_ALS_DATA1_MSB 0x98
99#define AMBIENT25_REG_ALS_STATUS2 0x9B
100#define AMBIENT25_REG_STATUS2 0x9D
101#define AMBIENT25_REG_STATUS3 0x9E
102#define AMBIENT25_REG_STATUS4 0x9F
103#define AMBIENT25_REG_STATUS5 0xA0
104#define AMBIENT25_REG_CFG0 0xA1
105#define AMBIENT25_REG_CFG1 0xA2
106#define AMBIENT25_REG_CFG2 0xA3
107#define AMBIENT25_REG_CFG3 0xA4
108#define AMBIENT25_REG_CFG4 0xA5
109#define AMBIENT25_REG_CFG5 0xA6
110#define AMBIENT25_REG_CFG6 0xA7
111#define AMBIENT25_REG_CFG7 0xA8
112#define AMBIENT25_REG_CFG8 0xA9
113#define AMBIENT25_REG_CFG9 0xAA
114#define AMBIENT25_REG_AGC_NR_SAMPLES0 0xAC
115#define AMBIENT25_REG_AGC_NR_SAMPLES1 0xAD
116#define AMBIENT25_REG_TRIGGER_MODE 0xAE
117#define AMBIENT25_REG_CONTROL 0xB1
118#define AMBIENT25_REG_INTENAB 0xBA
119#define AMBIENT25_REG_SIEN 0xBB
120#define AMBIENT25_REG_MOD_COMP_CFG1 0xCE
121#define AMBIENT25_REG_MEAS_SEQR_FD_0 0xCF
122#define AMBIENT25_REG_MEAS_SEQR_ALS_1 0xD0
123#define AMBIENT25_REG_MEAS_SEQR_APERS_AND_VSYNC_WAIT 0xD1
124#define AMBIENT25_REG_MEAS_SEQR_RESIDUAL_0 0xD2
125#define AMBIENT25_REG_MEAS_SEQR_RESIDUAL_1_AND_WAIT 0xD3
126#define AMBIENT25_REG_MEAS_SEQR_STEP0_MOD_GAINX_L 0xD4
127#define AMBIENT25_REG_MEAS_SEQR_STEP1_MOD_GAINX_L 0xD6
128#define AMBIENT25_REG_MEAS_SEQR_STEP2_MOD_GAINX_L 0xD8
129#define AMBIENT25_REG_MEAS_SEQR_STEP3_MOD_GAINX_L 0xDA
130#define AMBIENT25_REG_MEAS_SEQR_STEP0_MOD_PHDX_SMUX_L 0xDC
131#define AMBIENT25_REG_MEAS_SEQR_STEP0_MOD_PHDX_SMUX_H 0xDD
132#define AMBIENT25_REG_MEAS_SEQR_STEP1_MOD_PHDX_SMUX_L 0xDE
133#define AMBIENT25_REG_MEAS_SEQR_STEP1_MOD_PHDX_SMUX_H 0xDF
134#define AMBIENT25_REG_MEAS_SEQR_STEP2_MOD_PHDX_SMUX_L 0xE0
135#define AMBIENT25_REG_MEAS_SEQR_STEP2_MOD_PHDX_SMUX_H 0xE1
136#define AMBIENT25_REG_MEAS_SEQR_STEP3_MOD_PHDX_SMUX_L 0xE2
137#define AMBIENT25_REG_MEAS_SEQR_STEP3_MOD_PHDX_SMUX_H 0xE3
138#define AMBIENT25_REG_MOD_CALIB_CFG0 0xE4
139#define AMBIENT25_REG_MOD_CALIB_CFG2 0xE6
140#define AMBIENT25_REG_VSYNC_PERIOD0 0xF2
141#define AMBIENT25_REG_VSYNC_PERIOD1 0xF3
142#define AMBIENT25_REG_VSYNC_PERIOD_TARGET0 0xF4
143#define AMBIENT25_REG_VSYNC_PERIOD_TARGET1 0xF5
144#define AMBIENT25_REG_VSYNC_CONTROL 0xF6
145#define AMBIENT25_REG_VSYNC_CFG 0xF7
146#define AMBIENT25_REG_VSYNC_GPIO_INT 0xF8
147#define AMBIENT25_REG_MOD_FIFO_DATA_CFG0 0xF9
148#define AMBIENT25_REG_MOD_FIFO_DATA_CFG1 0xFA
149#define AMBIENT25_REG_FIFO_THR 0xFC
150#define AMBIENT25_REG_FIFO_STATUS0 0xFD
151#define AMBIENT25_REG_FIFO_STATUS1 0xFE
152#define AMBIENT25_REG_FIFO_DATA 0xFF
170#define AMBIENT25_ENABLE_FDEN 0x40
171#define AMBIENT25_ENABLE_AEN 0x02
172#define AMBIENT25_ENABLE_PON 0x01
178#define AMBIENT25_WTIME_DEFAULT 0x46
184#define AMBIENT25_TRIGGER_MODE_OFF 0x00
185#define AMBIENT25_TRIGGER_MODE_NORMAL 0x01
186#define AMBIENT25_TRIGGER_MODE_LONG 0x02
187#define AMBIENT25_TRIGGER_MODE_FAST 0x03
188#define AMBIENT25_TRIGGER_MODE_FASTLONG 0x04
189#define AMBIENT25_TRIGGER_MODE_VSYNC 0x05
190#define AMBIENT25_TRIGGER_MODE_MASK 0x07
196#define AMBIENT25_INTENAB_MIEN 0x80
197#define AMBIENT25_INTENAB_AIEN 0x08
198#define AMBIENT25_INTENAB_FIEN 0x04
199#define AMBIENT25_INTENAB_SIEN 0x01
205#define AMBIENT25_MEAS_MODE1_MOD_FIFO_FD_END_MARKER_WEN 0x80
206#define AMBIENT25_MEAS_MODE1_MOD_FIFO_FD_CHECKSUM_WEN 0x40
207#define AMBIENT25_MEAS_MODE1_MOD_FIFO_FD_GAIN_WEN 0x20
208#define AMBIENT25_MEAS_MODE1_ALS_MSB_POSITION_DEFAULT 0x08
209#define AMBIENT25_MEAS_MODE1_ALS_MSB_POSITION_MASK 0x1F
215#define AMBIENT25_GAIN_MOD1_HALF 0x00
216#define AMBIENT25_GAIN_MOD1_1X 0x10
217#define AMBIENT25_GAIN_MOD1_2X 0x20
218#define AMBIENT25_GAIN_MOD1_4X 0x30
219#define AMBIENT25_GAIN_MOD1_8X 0x40
220#define AMBIENT25_GAIN_MOD1_16X 0x50
221#define AMBIENT25_GAIN_MOD1_32X 0x60
222#define AMBIENT25_GAIN_MOD1_64X 0x70
223#define AMBIENT25_GAIN_MOD1_128X 0x80
224#define AMBIENT25_GAIN_MOD1_256X 0x90
225#define AMBIENT25_GAIN_MOD1_512X 0xA0
226#define AMBIENT25_GAIN_MOD1_1024X 0xB0
227#define AMBIENT25_GAIN_MOD1_2048X 0xC0
228#define AMBIENT25_GAIN_MOD1_4096X 0xD0
229#define AMBIENT25_GAIN_MOD0_HALF 0x00
230#define AMBIENT25_GAIN_MOD0_1X 0x01
231#define AMBIENT25_GAIN_MOD0_2X 0x02
232#define AMBIENT25_GAIN_MOD0_4X 0x03
233#define AMBIENT25_GAIN_MOD0_8X 0x04
234#define AMBIENT25_GAIN_MOD0_16X 0x05
235#define AMBIENT25_GAIN_MOD0_32X 0x06
236#define AMBIENT25_GAIN_MOD0_64X 0x07
237#define AMBIENT25_GAIN_MOD0_128X 0x08
238#define AMBIENT25_GAIN_MOD0_256X 0x09
239#define AMBIENT25_GAIN_MOD0_512X 0x0A
240#define AMBIENT25_GAIN_MOD0_1024X 0x0B
241#define AMBIENT25_GAIN_MOD0_2048X 0x0C
242#define AMBIENT25_GAIN_MOD0_4096X 0x0D
248#define AMBIENT25_FIFO_THR_DEFAULT 5
254#define AMBIENT25_CONTROL_SOFT_RESET 0x08
255#define AMBIENT25_CONTROL_FIFO_CLR 0x02
256#define AMBIENT25_CONTROL_CLEAR_SAI_ACTIVE 0x01
262#define AMBIENT25_ALS_DATA_SATURATION 0xFFFF
268#define AMBIENT25_DEVICE_ID 0x5C
275#define AMBIENT25_DEVICE_ADDRESS 0x39
293#define AMBIENT25_MAP_MIKROBUS( cfg, mikrobus ) \
294 cfg.scl = MIKROBUS( mikrobus, MIKROBUS_SCL ); \
295 cfg.sda = MIKROBUS( mikrobus, MIKROBUS_SDA ); \
296 cfg.en = MIKROBUS( mikrobus, MIKROBUS_RST ); \
297 cfg.vsync = MIKROBUS( mikrobus, MIKROBUS_PWM ); \
298 cfg.int_pin = MIKROBUS( mikrobus, MIKROBUS_INT )
ambient25_return_value_t
Ambient 25 Click return value data.
Definition ambient25.h:358
@ AMBIENT25_OK
Definition ambient25.h:359
@ AMBIENT25_ERROR
Definition ambient25.h:360
void ambient25_enable_device(ambient25_t *ctx)
Ambient 25 enable device function.
err_t ambient25_init(ambient25_t *ctx, ambient25_cfg_t *cfg)
Ambient 25 initialization function.
err_t ambient25_read_regs(ambient25_t *ctx, uint8_t reg, uint8_t *data_out, uint8_t len)
Ambient 25 read regs function.
err_t ambient25_read_reg(ambient25_t *ctx, uint8_t reg, uint8_t *data_out)
Ambient 25 read reg function.
err_t ambient25_read_fifo_size(ambient25_t *ctx, uint16_t *fifo_size)
Ambient 25 read fifo size function.
void ambient25_set_vsync_pin(ambient25_t *ctx, uint8_t state)
Ambient 25 set vsync pin state function.
err_t ambient25_check_communication(ambient25_t *ctx)
Ambient 25 check communication function.
uint8_t ambient25_get_int_pin(ambient25_t *ctx)
Ambient 25 get int pin state function.
err_t ambient25_read_data(ambient25_t *ctx, ambient25_data_t *data_out)
Ambient 25 read data function.
err_t ambient25_write_regs(ambient25_t *ctx, uint8_t reg, uint8_t *data_in, uint8_t len)
Ambient 25 write regs function.
err_t ambient25_write_reg_word(ambient25_t *ctx, uint8_t reg, uint16_t data_in)
Ambient 25 write reg word function.
void ambient25_cfg_setup(ambient25_cfg_t *cfg)
Ambient 25 configuration object setup function.
err_t ambient25_soft_reset(ambient25_t *ctx)
Ambient 25 soft reset function.
err_t ambient25_default_cfg(ambient25_t *ctx)
Ambient 25 default configuration function.
void ambient25_disable_device(ambient25_t *ctx)
Ambient 25 disable device function.
err_t ambient25_write_reg(ambient25_t *ctx, uint8_t reg, uint8_t data_in)
Ambient 25 write reg function.
err_t ambient25_read_reg_word(ambient25_t *ctx, uint8_t reg, uint16_t *data_out)
Ambient 25 read reg word function.
err_t ambient25_clear_fifo(ambient25_t *ctx)
Ambient 25 clear fifo function.
Ambient 25 Click configuration object.
Definition ambient25.h:340
pin_name_t vsync
Definition ambient25.h:345
uint32_t i2c_speed
Definition ambient25.h:348
pin_name_t scl
Definition ambient25.h:341
pin_name_t en
Definition ambient25.h:344
pin_name_t int_pin
Definition ambient25.h:346
pin_name_t sda
Definition ambient25.h:342
uint8_t i2c_address
Definition ambient25.h:349
Ambient 25 Click data object.
Definition ambient25.h:308
uint16_t als_data_1
Definition ambient25.h:310
uint16_t als_data_0
Definition ambient25.h:309
Ambient 25 Click context object.
Definition ambient25.h:319
digital_out_t vsync
Definition ambient25.h:322
digital_in_t int_pin
Definition ambient25.h:325
i2c_master_t i2c
Definition ambient25.h:328
digital_out_t en
Definition ambient25.h:321
uint8_t slave_address
Definition ambient25.h:331